// animal.hpp
#include <memory>
#include <string>

class Animal {
public:
  virtual void sound() = 0;
  virtual std::string getName() = 0; // 新增获取名称方法
  virtual ~Animal() = default;
};

using AnimalPtr = std::unique_ptr<Animal, void (*)(Animal *)>;

extern "C" {
Animal *create_animal(const char *name); // 工厂函数添加名称参数
void destroy_animal(Animal *);
}